home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / djgpp / clients / xlogo / xlogo.c < prev    next >
Text File  |  1994-08-12  |  3KB  |  112 lines

  1. /*
  2.  * $XConsortium: xlogo.c,v 1.15 91/01/10 12:27:35 converse Exp $
  3.  *
  4.  * Copyright 1989 Massachusetts Institute of Technology
  5.  *
  6.  * Permission to use, copy, modify, distribute, and sell this software and its
  7.  * documentation for any purpose is hereby granted without fee, provided that
  8.  * the above copyright notice appear in all copies and that both that
  9.  * copyright notice and this permission notice appear in supporting
  10.  * documentation, and that the name of M.I.T. not be used in advertising or
  11.  * publicity pertaining to distribution of the software without specific,
  12.  * written prior permission.  M.I.T. makes no representations about the
  13.  * suitability of this software for any purpose.  It is provided "as is"
  14.  * without express or implied warranty.
  15.  *
  16.  * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
  17.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
  18.  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  19.  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
  20.  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  21.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  22.  *
  23.  */
  24.  
  25. #ifdef MSDOS
  26. #include "X11/Intrinsc.h"      /* QDK 05/20/1994  3:37pm. */
  27. #else
  28. #include "X11/Intrinsic.h"
  29. #endif
  30. #include <X11/Xaw/Logo.h>
  31. #include <X11/Xaw/Cardinals.h>
  32.  
  33. #ifndef MSDOS
  34. extern void exit();
  35. #endif
  36. static void quit();
  37.  
  38. static XrmOptionDescRec options[] = {
  39. { "-shape", "*shapeWindow", XrmoptionNoArg, (caddr_t) "on" },
  40. };
  41.  
  42. static XtActionsRec actions[] = {
  43.     {"quit",    quit}
  44. };
  45.  
  46. static Atom wm_delete_window;
  47.  
  48. String fallback_resources[] = {
  49.     "*iconPixmap:    xlogo32",
  50.     "*iconMask:      xlogo32",
  51.     NULL,
  52. };
  53.  
  54. /*
  55.  * Report the syntax for calling xlogo.
  56.  */
  57.  
  58. static void
  59. Syntax(call)
  60.     char *call;
  61. {
  62.     (void) printf ("Usage: %s [-fg <color>] [-bg <color>] [-rv] %s\n", call, 
  63.            "[-bw <pixels>] [-bd <color>]");
  64.     (void) printf ("             [-d [<host>]:[<vs>]]\n");
  65.     (void) printf ("             [-g [<width>][x<height>]%s", 
  66.            "[<+-><xoff>[<+-><yoff>]]]\n");
  67.     (void) printf ("             [-shape]\n");
  68.     (void) printf ("\n");
  69.     exit(1);
  70. }
  71.  
  72. void 
  73. main(argc, argv)
  74. int argc;
  75. char **argv;
  76. {
  77.     Widget toplevel;
  78.     XtAppContext app_con;
  79.  
  80.     toplevel = XtAppInitialize(&app_con, "XLogo", options, XtNumber(options), 
  81.                    &argc, argv, fallback_resources, NULL, ZERO);
  82.     if (argc != 1) 
  83.     Syntax(argv[0]);
  84.  
  85.     XtAppAddActions
  86.     (XtWidgetToApplicationContext(toplevel), actions, XtNumber(actions));
  87.     XtOverrideTranslations
  88.     (toplevel, XtParseTranslationTable ("<Message>WM_PROTOCOLS: quit()"));
  89.     XtCreateManagedWidget("xlogo", logoWidgetClass, toplevel, NULL, ZERO);
  90.     XtRealizeWidget(toplevel);
  91.     wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
  92.                    False);
  93.     (void) XSetWMProtocols (XtDisplay(toplevel), XtWindow(toplevel),
  94.                             &wm_delete_window, 1);
  95.     XtAppMainLoop(app_con);
  96. }
  97.  
  98. static void quit(w, event, params, num_params)
  99.     Widget w;
  100.     XEvent *event;
  101.     String *params;
  102.     Cardinal *num_params;
  103. {
  104.     if (event->type == ClientMessage && 
  105.     event->xclient.data.l[0] != wm_delete_window) {
  106.     XBell(XtDisplay(w), 0);
  107.     } else {
  108.     XCloseDisplay(XtDisplay(w));
  109.     exit(0);
  110.     }
  111. }
  112.